package cn.tedu.interfacex;

public interface USB {
    //抽象方法
    void connect();
}
class 鼠标 implements USB{
    public void connect() {
        System.out.println("通过usb将鼠标连接。。。");
    }
    //移动
    public void move(){
        System.out.println("移动鼠标可以画画");
    }
}
class 键盘 implements USB{

    @Override
    public void connect() {
        System.out.println("通过usb将键盘连接。。。");
    }
    //打字
    public void in(){
        System.out.println("键盘可以输入数据");
    }
}
class U implements USB{

    @Override
    public void connect() {
        System.out.println("通过usb将u盘连接。。。");
    }
    //数据传输
    public void dataCopy(){
        System.out.println("U盘拷贝数据");
    }
}
class Computer{
    //当前电脑所有usb口的数组
    USB[] usbs;//默认值null

    public USB[] getUsbs() {
        return usbs;
    }

    //提供方法 将某个外接设备连接到电脑
    public void add(int index,USB usb){
        //判断数组是否为null 避免空指针异常
        if(usbs!=null){
            //判断index在不在数组下标范围之内
            if(index>=0&&index<=usbs.length-1){
                usbs[index] = usb;
                System.out.println("将"+usb+"插入了到了第"+(index+1)+"个usb口");
            }
        }
    }
    //open方法
    public void open(){
        //调用目前插在电脑上的所有USB的connect方法
        for (USB usb:usbs) {
            if(usb!=null){
                usb.connect();//此处运行时调用的是USB接口实现类中的方法
            }
        }
    }
    //work
    public void work(USB usb){
        //向下造型
        if(usb instanceof 鼠标){
            鼠标 s= (鼠标) usb;
            s.move();
        }else if(usb instanceof 键盘){
            键盘 s= (键盘) usb;
            s.in();
        }else if(usb instanceof U){
            U s= (U) usb;
            s.dataCopy();
        }
    }
}
